/**
 * Created with CLion.
 * Description: 
 * User: loong
 * Date: 2024/2/28
 * Time: 22:22
 */

#ifndef CES_ICESPLUGIN_H
#define CES_ICESPLUGIN_H
#include "CesGlobal.h"
#include "IContext.h"

namespace CES::Core {
    class IPlugin {
    public:
        virtual ~IPlugin() = default;

        virtual bool InitPlugin(IContextSPtr _content) = 0;

        virtual bool StartPlugin() = 0;

        virtual bool StopPlugin() = 0;

        virtual bool DeInitPlugin() = 0;
    };

    using IPluginSPtr = std::shared_ptr<IPlugin>;
    using IPluginWPtr = std::weak_ptr<IPlugin>;
} // namespace CES::Core

Q_DECLARE_INTERFACE(CES::Core::IPlugin, "CES::Core::IPlugin")
#endif//CES_ICESPLUGIN_H
